package com.catsic.core.organ.service;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.catsic.base.BaseService;
import com.catsic.base.tree.TreeInfo;
import com.catsic.core.conditon.OrganCondition;
import com.catsic.core.entity.Organ;
import com.catsic.core.form.OrganForm;

/**
 * @author yangyd
 */
public interface OrganService extends BaseService<Organ,String>{
	
	/**
	 * 添加
	 * @param form
	 */
	public OrganForm add(OrganForm form);
	
	/**
	 * 更新
	 * @param form
	 */
	public OrganForm update(OrganForm form);
	
	/**
	 * delete:通过id删除机构
	 * @author yangyd
	 * @param id
	 * @return 
	 */
	public void delete(String id);
	
	/**
	 * 通过机构Id取得机构
	 * @param 
	 */
	public Organ findById(String id);
	
	/**
	 * 设置机构编码
	 * @param jb
	 * @param code
	 */
	public void code(Integer jb,String code);
	
	/**
	 * 通过机构Id取得机构
	 * @param 
	 */
	public OrganForm findOrganById(String id);
	
	/**
	 * 通过机构code取得机构
	 * @param 
	 */
	public Organ findByCode(String code);
	
	/**
	 * 通过父级机构id取得子机构,生成树结构
	 * @param 
	 */
	public List<Organ> findByPid(String id);
	
	/**
	 * 通过父级机构code取得子机构
	 * @param 
	 */
	public List<Organ> findByPcode(String code);
	
	/**
	 * 通过父机构编码,获取机构树数据
	 * @param 
	 */
	public List<TreeInfo> getTreeInfo(String id);
	
	/**
	 * 通过父级机构ID取得子机构
	 * @param 
	 */
	public List<OrganForm> query(String id);
	
	/**
	 * 通过机构编码，名称查询机构
	 * @param 
	 */
	public List<TreeInfo> query(OrganCondition condition);

	/**查询机构
	 * @param oid
	 * @return
	 */
	public Organ findOrgById(String id);

	/**
	 * 获取父级机构
	 * @param string
	 * @return
	 */
	public Organ findOrgByPid(String pid);
	
	public Page<OrganForm> findAll(OrganCondition condition, Pageable pageable);
	
	public List<OrganForm> listForm(List<Organ> list);
}
